﻿#define _CRT_SECURE_NO_WARNINGS 1


////描述
////现在有一个长度为 n 的正整数序列，其中只有一种数值出现了奇数次，其他数值均出现偶数次，请你找出那个出现奇数次的数值。
////
////输入描述：
////第一行：一个整数n，表示序列的长度。第二行：n个正整数ai，两个数中间以空格隔开。
////
////输出描述：
////一个数，即在序列中唯一出现奇数次的数值。
////示例1
////输入：5    2 1 2 3 1
////输出：3
////
////示例2
////输入：1    1
////输出：1
//
//#include<stdio.h>
//int main()
//{
//    int n = 0;
//    scanf("%d", &n);
//    int ret = 0;
//    for (int i = 0; i < n; i++)
//    {
//        int num = 0;
//        scanf("%d", &num);
//        ret ^= num;
//    }
//    printf("%d", ret);
//
//    return 0;
//}













////描述
////给定一个长度为n的数组nums，请你找到峰值并返回其索引。数组可能包含多个峰值，在这种情况下，返回任何一个所在位置即可。
////1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于
////2.假设 nums[-1] = nums[n] = -\infty−∞
////3.对于所有有效的 i 都有 nums[i] != nums[i + 1]
////4.你可以使用O(logN)的时间复杂度实现此问题
////
////如输入[2, 4, 1, 2, 7, 8, 4]时，会形成两个山峰，一个是索引为1，峰值为4的山峰，另一个是索引为5，峰值为8的山峰，如下图所示：
////
////示例1
////输入：[2, 4, 1, 2, 7, 8, 4]
////返回值：1
////说明：4和8都是峰值元素，返回4的索引1或者8的索引5都可以
//
//int findPeakElement(int* nums, int numsLen) {
//    int left = 0;
//    int right = numsLen - 1;
//    while (left < right)
//    {
//        int mid = (left + right) / 2;
//        if (nums[mid] < nums[mid + 1])
//            left = mid + 1;
//        else
//            right = mid;
//    }
//    return left;
//}